package org.shoukaiseki.inittable.domain;


import com.alibaba.fastjson2.annotation.JSONField;

import java.util.ArrayList;
import java.util.List;


public class TableInfo {

    @JSONField(serialize = false)
    private String beanSource;

    /**
     * 表名
     */
    private String name;

    /**
     * 表描述
     */
    private String comment;

    /**
     * 默认字符集
     */
    private String defaultCharset;

    /**
     * 数据库引擎
     */
    private String engine;

    /**
     * 自动生成初始值
     */
    private String autoIncrement;


    private String primaryKey;

    /** 表描述 */
    private String description;

    /** 类型:0:table;1:视图(暂不支持) */
    private Integer type;

    /**
     * 注释
     */
    private String remark;

    private Integer version;


    private List<TableColumnInfo> columnInfoList=new ArrayList<>();

    private List<TableIndexInfo> tableIndexInfoList=new ArrayList<>();

    private List<TableConstraintInfo> tableConstraintInfoList=new ArrayList<>();

    private List<TableTriggerInfo> tableTriggerInfoList =new ArrayList<>();

    private List<String> createTableInitDataList=new ArrayList<>();


    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getComment() {
        return comment;
    }

    public void setComment(String comment) {
        this.comment = comment;
    }

    public String getDefaultCharset() {
        return defaultCharset;
    }

    public void setDefaultCharset(String defaultCharset) {
        this.defaultCharset = defaultCharset;
    }

    public String getEngine() {
        return engine;
    }

    public void setEngine(String engine) {
        this.engine = engine;
    }

    public String getAutoIncrement() {
        return autoIncrement;
    }

    public void setAutoIncrement(String autoIncrement) {
        this.autoIncrement = autoIncrement;
    }

    public List<TableColumnInfo> getColumnInfoList() {
        return columnInfoList;
    }

    public void setColumnInfoList(List<TableColumnInfo> columnInfoList) {
        this.columnInfoList = columnInfoList;
    }

    public String getPrimaryKey() {
        return primaryKey;
    }

    public void setPrimaryKey(String primaryKey) {
        this.primaryKey = primaryKey;
    }

    public List<TableIndexInfo> getTableIndexInfoList() {
        return tableIndexInfoList;
    }

    public void setTableIndexInfoList(List<TableIndexInfo> tableIndexInfoList) {
        this.tableIndexInfoList = tableIndexInfoList;
    }

    public List<TableTriggerInfo> getTableTriggerInfoList() {
        return tableTriggerInfoList;
    }

    public void setTableTriggerInfoList(List<TableTriggerInfo> tableTriggerInfoList) {
        this.tableTriggerInfoList = tableTriggerInfoList;
    }

    public String getDescription() {
        return description;
    }

    public void setDescription(String description) {
        this.description = description;
    }

    public Integer getType() {
        return type;
    }

    public void setType(Integer type) {
        this.type = type;
    }

    public String getRemark() {
        return remark;
    }

    public void setRemark(String remark) {
        this.remark = remark;
    }

    public Integer getVersion() {
        return version;
    }

    public void setVersion(Integer version) {
        this.version = version;
    }

    public String getBeanSource() {
        return beanSource;
    }

    public void setBeanSource(String beanSource) {
        this.beanSource = beanSource;
    }

    public List<String> getCreateTableInitDataList() {
        return createTableInitDataList;
    }

    public void setCreateTableInitDataList(List<String> createTableInitDataList) {
        this.createTableInitDataList = createTableInitDataList;
    }

    public List<TableConstraintInfo> getTableConstraintInfoList() {
        return tableConstraintInfoList;
    }

    public void setTableConstraintInfoList(List<TableConstraintInfo> tableConstraintInfoList) {
        this.tableConstraintInfoList = tableConstraintInfoList;
    }
}
